package model

type AuthLoginRequest struct {
	UserName string `json:"username"`
	Password string `json:"password"`
}

type AuthLoginResponse struct {
	Code    int64  `json:"code"`
	Message string `json:"message"`
	Result  string `json:"result"`
}

type AuthLogoutRequest struct {
}

type AuthLogoutResponse struct {
	Timestamp string `json:"timestamp"`
	Status    int64  `json:"status"`
	Error     string `json:"error"`
	Message   string `json:"message"`
	Path      string `json:"path"`
}

type AuthMeRequest struct {
}

type AuthMeDetail struct {
	AvgLevel         interface{} `json:"avgLevel"`
	MaxConsults      int         `json:"maxConsults"`
	Gender           string      `json:"gender"`
	AvatarUrl        interface{} `json:"avatarUrl"`
	EmergencyContact interface{} `json:"emergencyContact"`
	Roles            string      `json:"roles"`
	Type             string      `json:"type"`
	Authorities      struct {
		ConsultationList struct {
			Read string `json:"read"`
		} `json:"consultation_list"`
		CounselorManagement struct {
			Add    string `json:"add"`
			Read   string `json:"read"`
			Edit   string `json:"edit"`
			Delete string `json:"delete"`
		} `json:"counselor_management"`
		VisitorManager struct {
			Read string `json:"read"`
		} `json:"visitor_manager"`
		RequestList struct {
			Read string `json:"read"`
		} `json:"request_list"`
		HomepageSupervisor struct {
			Read string `json:"read"`
		} `json:"homepage_supervisor"`
		ScheduleList struct {
			Read string `json:"read"`
			Edit string `json:"edit"`
		} `json:"schedule_list"`
	} `json:"authorities"`
	Institution    string      `json:"institution"`
	PhoneNumber    string      `json:"phoneNumber"`
	Name           string      `json:"name"`
	State          string      `json:"state"`
	EmergencyPhone interface{} `json:"emergencyPhone"`
	Username       string      `json:"username"`
	Status         string      `json:"status"`
}

type AuthMeResponse struct {
	Code    int64        `json:"code"`
	Message string       `json:"message"`
	Result  AuthMeDetail `json:"result"`
}

type UserInfo struct {
	Id                    string      `json:"id"`
	CreatedTime           int64       `json:"createdTime"`
	Creator               interface{} `json:"creator"`
	LastUpdateTime        int64       `json:"lastUpdateTime"`
	LastUpdater           interface{} `json:"lastUpdater"`
	InstitutionCode       string      `json:"institutionCode"`
	OpenId                interface{} `json:"openId"`
	Name                  string      `json:"name"`
	Username              string      `json:"username"`
	AvatarUrl             interface{} `json:"avatarUrl"`
	Type                  string      `json:"type"`
	Gender                string      `json:"gender"`
	PhoneNumber           string      `json:"phoneNumber"`
	Email                 string      `json:"email"`
	IdNumber              string      `json:"idNumber"`
	Department            string      `json:"department"`
	Title                 string      `json:"title"`
	Age                   int         `json:"age"`
	State                 interface{} `json:"state"`
	Avatar                interface{} `json:"avatar"`
	TotalTime             int         `json:"totalTime"`
	Qualification         string      `json:"qualification"`
	QualificationCode     string      `json:"qualificationCode"`
	Supervisors           interface{} `json:"supervisors"`
	Activated             bool        `json:"activated"`
	ActivateTime          interface{} `json:"activateTime"`
	Roles                 string      `json:"roles"`
	EmergencyContact      interface{} `json:"emergencyContact"`
	EmergencyPhone        interface{} `json:"emergencyPhone"`
	MaxConsults           int         `json:"maxConsults"`
	Authorities           interface{} `json:"authorities"`
	Enabled               bool        `json:"enabled"`
	CredentialsNonExpired bool        `json:"credentialsNonExpired"`
	AccountNonExpired     bool        `json:"accountNonExpired"`
	AccountNonLocked      bool        `json:"accountNonLocked"`
	Subscribe             bool        `json:"subscribe"`
}

type UserListRequest struct {
}

type UserListResponse struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Result  []UserInfo  `json:"result"`
	Count   int         `json:"count"`
	Next    interface{} `json:"next"`
}

type UserMsSupervisorRequest struct {
	UserName          string `json:"username"`
	Name              string `json:"name"`
	Age               int64  `json:"age"`
	Password          string `json:"password"`
	Gender            string `json:"gender"`
	PhoneNumber       string `json:"phoneNumber"`
	IDNumber          string `json:"idNumber"`
	Department        string `json:"department"`
	Title             string `json:"title"`
	Email             string `json:"email"`
	Qualification     string `json:"qualification"`
	QualificationCode string `json:"qualificationCode"`
}

type UserMsSupervisorResponse struct {
	Code    int64  `json:"code"`
	Message string `json:"message"`
	Result  string `json:"result"`
}

type UserMsCounselorRequest struct {
	UserName    string   `json:"username"`
	Name        string   `json:"name"`
	Age         int64    `json:"age"`
	Password    string   `json:"password"`
	Gender      string   `json:"gender"`
	PhoneNumber string   `json:"phoneNumber"`
	IDNumber    string   `json:"idNumber"`
	Department  string   `json:"department"`
	Title       string   `json:"title"`
	Email       string   `json:"email"`
	Supervisors []string `json:"supervisors"`
}

type UserMsCounselorResponse struct {
	Code    int64  `json:"code"`
	Message string `json:"message"`
	Result  string `json:"result"`
}

type UserMsSupervisorModifyResponse struct {
	Code    int      `json:"code"`
	Message string   `json:"message"`
	Result  UserInfo `json:"result"`
}

type UserMsCounselorModifyResponse struct {
	Code    int      `json:"code"`
	Message string   `json:"message"`
	Result  UserInfo `json:"result"`
}

type UserMsSupervisorDeleteRequest struct {
	UserName string `json:"username"`
}

type UserMsSupervisorDeleteResponse struct {
	Code    int64  `json:"code"`
	Message string `json:"message"`
	Result  string `json:"result"`
}

type UserMsCounselorDeleteRequest struct {
	UserName string `json:"username"`
}

type UserMsCounselorDeleteResponse struct {
	Code    int64  `json:"code"`
	Message string `json:"message"`
	Result  string `json:"result"`
}

type UserPasswordRequest struct {
	OldPassword string `json:"oldPassword"`
	Password    string `json:"password"`
}

type UserPasswordResponse struct {
	Code    int64  `json:"code"`
	Message string `json:"message"`
	Result  string `json:"result"`
}

type UserMaxconsultsRequest struct {
	MaxConsults int64 `json:"maxConsults"`
}

type UserMaxconsultsResponse struct {
	Code    int64    `json:"code"`
	Message string   `json:"message"`
	Result  UserInfo `json:"result"`
}

type UserBanRequest struct {
	UserID string `json:"userId"`
}

type UserBanResponse struct {
	Code    int64  `json:"code"`
	Message string `json:"message"`
	Result  string `json:"result"`
}

type UserActiveRequest struct {
	UserID string `json:"userId"`
}

type UserActiveResponse struct {
	Code    int64  `json:"code"`
	Message string `json:"message"`
	Result  string `json:"result"`
}
